package IOFlow.practice;

import java.io.*;

//练习4
public class Four {
    public static void main(String[] args) throws IOException {
        /**
         * 题目:拷贝文件
         *      利用四种方式进行拷贝，并统计用时
         *      
         *      1.字节流的基本流:一次读写一个字节
         *      2.字节流的基本流:一次读写一个字节数组
         *      3.字节缓冲流:一次读写一个字节
         *      4.字节缓冲流:一次读写一个字节数组
         *
         *      拷贝将使用1和4方法最为常用
         */
        long start=System.currentTimeMillis();
//        method1();
//        method2();//0.063秒
//        method3();
//        method4();
        long end=System.currentTimeMillis();
        System.out.println((end-start)/1000.0+"秒");
    }
//1.字节流的基本流:一次读写一个字节
    public static void method1() throws IOException {
        FileInputStream fis=new FileInputStream("JavaCase\\Test");
        FileOutputStream fos=new FileOutputStream("JavaCase\\Test.txt");
        int len;
        while((len=fis.read())!=-1){
            fos.write(len);
        }
        fos.close();
        fis.close();
    }

//    2.字节流的基本流:一次读写一个字节数组
    public static void method2() throws IOException {
        FileInputStream fis=new FileInputStream("JavaCase\\Test");
        FileOutputStream fos=new FileOutputStream("JavaCase\\Test.txt");
        byte[] bytes=new byte[8192];
        int len;
        while((len=fis.read(bytes))!=-1){
            fos.write(bytes,0,len);
        }
        fos.close();
        fis.close();
    }
    public static void method3() throws IOException {
        BufferedInputStream fis=new BufferedInputStream(new FileInputStream("JavaCase\\Test"));
        BufferedOutputStream fos=new BufferedOutputStream(new FileOutputStream("JavaCase\\Test.txt"));
        int len;
        while((len=fis.read())!=-1){
            fos.write(len);
        }
        fos.close();
        fis.close();
    }
    public static void method4() throws IOException {
        BufferedInputStream fis=new BufferedInputStream(new FileInputStream("JavaCase\\Test"));
        BufferedOutputStream fos=new BufferedOutputStream(new FileOutputStream("JavaCase\\Test.txt"));
        byte[] bytes=new byte[2];
        int len;
        while((len=fis.read(bytes))!=-1){
            fos.write(len);
        }
        fos.close();
        fis.close();
    }
}
